<?php
namespace Admin\Model;

class CategoryModel extends CommonModel {
    
    protected $fields = array('id','cname','parent_id','isrec');
    protected $_validate = array(
    	array('cname','require','分类名称必须填写'),
    	
    );
    
   //获取格式化之后的数据
	public function getCateTree($id=0)
	{
		//先获取所有的分类信息
		$data = $this->select();
		//在对获取的信息进行格式化
		$list = $this->getTree($data,$id);
		return $list;
	}
	//格式化分类信息
	public function getTree($data,$id=0,$lev=1)
	{
		static $list = array();
		foreach ($data as $key => $value) {
			if($value['parent_id']==$id){
				$value['lev']=$lev;
				$list[]=$value;
				//使用递归的方式获取分类下的子分类
				$this->getTree($data,$value['id'],$lev+1);
			}
		}
		return $list;
	}
	
	//删除列表
	public function dels($id){
		//如果删除的分类下有子分类不容许删除
		$result = $this -> where('parent_id='.$id) -> find();
		if($result){
			return false;
		}
		return $this -> where('id='.$id) -> delete();
	}
	//	实现修改的方法
	public function update($data)
	{
		// dump($data);exit();
		// 需要过滤掉设置父分类为自己或者自己下的子分类
		// 1、根据要修改的分类的标识 获取到自己下的所有的子分类
		$tree = $this->getCateTree($data['id']);
		//将自己添加到不能修改的数组中
		$tree[]=array('id'=>$data['id']);
		// dump($tree);exit();
		// 2、根据提交的parent_id的值 判断如果等于当前修改的分类ID或者是当前分类下的所有子分类的ID不容许修改
		foreach ($tree as $key => $value) {
			if($data['parent_id']==$value['id']){
				$this->error='不能设置子分类为父分类';
				return false;
			}
		}
		
		return $this->save($data);
	}
}